#include <iostream>
#include <coroutine>
#include <thread>
#include <functional>

#include "utils/CoutTabber.h"

#include "coroutines/HelloWorld.h"
#include "coroutines/Delay.h"
#include "coroutines/UE5Coro.h"
#include "coroutines/CppReferenceStandard.h"

void RunTest(const char* ModuleName, std::function<void()> TestFunc) {
    std::cout << ModuleName << ":" << std::endl;
    CoutTabber tabber;
    TestFunc(); // 执行传递进来的函数
}

#define TEST_WRAPPER(Module) RunTest(#Module, Module::Test)

int main() {
    TEST_WRAPPER(HelloWorld);
    TEST_WRAPPER(Delay);
    TEST_WRAPPER(UE5Coro);
    TEST_WRAPPER(CppReferenceStandard);
}
